<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>堆的向下调整</title>
</head>

<body>
    <script src="./小根堆排序位置调整while循环心脏函数.js"></script>
    <script>
        // 堆中父结点(i)与左子结点索引关系：i => 2*i+1
        // 堆中父结点(i)与右子结点索引关系：i => 2*i+2
        // 子结点(j)与父结点索引关系：j => (j-1)/2 向下取整


        // function heapCreate(commonArr) { //创建堆函数i为子结点
        //     let i = commonArr.length - 1
        //     while (i > 0) {
        //         nodeGoing(commonArr, i, commonArr.length - 1)
        //         i--
        //     }
        //     return commonArr
        // }

        //时间复杂度：O（n*log n） 
        function heapCreate(commonArr) { //创建堆函数i为需要调整的树的根结点
            let i = Math.floor((commonArr.length - 2) / 2) //最后一个父结点
            while (i >= 0) { //父结点要一直循环到到根结点
                nodeGoing(commonArr, i, commonArr.length - 1)
                i--
            }
            return commonArr
        }
        let testArr = heapCreate([9, 8, 7, 6, 5, 4, 3, 2, 1])
        console.log(testArr);
    </script>
</body>

</html>